/*
 * CrossCheckingPanograph.h
 *
 *  Created on: 08/09/2011
 *      Author: kimdongback
 */

#ifndef CROSSCHECKINGPANOGRAPH_H_
#define CROSSCHECKINGPANOGRAPH_H_

#include <vector>
#include "opencv2/opencv.hpp"

using namespace std;

/*
 * Choosing two images based on matching level among the images
 */
class CrossCheckingPanograph
{
    protected:

        vector<cv::Mat> m_images;
        vector<cv::Mat> m_grayscales;
        vector<vector<cv::KeyPoint> > m_keypoints;
        vector<cv::Mat> m_descriptors;
        vector < vector < vector<cv::DMatch> > > m_match_results;

        vector<int>     m_best_match;
        vector<int>     m_merge_order;

    public:
        CrossCheckingPanograph(const vector<cv::Mat> & images);
        virtual ~CrossCheckingPanograph();

        void analyze();

        void panograph();
};

#endif /* CROSSCHECKINGPANOGRAPH_H_ */
